refactor(governance,ci): converge report schema, harden CI pipeline, sequence modernization#7
Merged
Conversation
…sequence modernization Phase 1 - Governance closeout: - Retire TransitionGateDiagnosticEntry; emit single GovernanceFailure-based failures array - Validate transition-gate parity against Ci transitive closure instead of direct edges - Simplify Ci target DependsOn to high-level orchestration targets Phase 2 - CI reliability & security: - Replace force-push badge publishing with safe fetch-checkout-push flow - Add commitSha and workflowRunId verification in release manifest checks Phase 3 - CI performance & signals: - Introduce CiMatrix target for lightweight cross-platform validation - Unify NuGet cache key across ci.yml and codeql.yml to packages.lock.json hash Phase 4 - Modernization sequencing: - Establish execution order: runtime-architecture-decomposition before configuration-interface-error-modernization - Sync all OpenSpec artifacts (proposal, design, tasks, specs) with implementation state Made-with: Cursor
Hongwei-MB
added a commit
that referenced
this pull request
Apr 26, 2026
…PORTANT)
Pre-implementation audit of T6–T10 surfaced several issues that would
prevent T6 from shipping a green commit as written:
BLOCKERS (5):
B1. T6 + T7 merged. T6's smoke test uses WKWebViewConfiguration.Create()
and `new WKWebView(config)`, but Configuration was a T7 deliverable.
Apple's `initWithFrame:configuration:` requires the config object to
instantiate WKWebView, so the three wrappers must land WITH T6 in
one commit. Old T7 marked SUPERSEDED with example code preserved.
B2. T7 example called Libobjc.void_objc_msgSend_bool — does not exist.
Fixed inline to use the existing
`void_objc_msgSend(handle, sel, value ? 1 : 0)` overload.
B3. T7 example used `base(NewInstance())` — wrong arity. NSObject ctor
is `(IntPtr handle, bool owns)`. Fixed to `base(NewInstance(), owns: true)`.
B4. SetMagnification(double, CGPoint) deleted (YAGNI). The .mm shim has
no evidence of `setMagnification:centeredAtPoint:` being used; also
removes the need to vendor CGPoint in Phase 2. Add in Phase 4 with
proper Apple-API research + main-thread test infra when an actual
adapter consumer appears.
B5. NSURLResponse vendored inside T10. T10's
WKURLSchemeTask.DidReceiveResponse(NSURLResponse) referenced an
un-vendored Foundation type. New T10 Step 0 vendors
Macios/Interop/Foundation/NSURLResponse.cs from same Avalonia SHA
as the T4 batch. Phase 1 exit gate is NOT reopened — file lands in
T10's commit alongside the WebKit task surface.
IMPORTANTS (4):
I1. T6 Step 2 method list trimmed to shim-proven members. Deleted
EstimatedProgress, IsHidden/Hidden setter (not in WkWebViewShim.mm),
consistent with Phase 2 goal of replacing existing .mm surface only.
I2. Main-thread dispatch (WebKit UI types must be on main thread):
DEFERRED. Documented as a known watch-item; if xUnit smoke flakes,
add helper in follow-up.
I3. WKHTTPCookieStore renamed + relocated. Old plan said
Foundation/NSHTTPCookieStore.cs — Apple has no such class
(NSHTTPCookieStorage is unrelated). Renamed to
Macios/Interop/WebKit/WKHTTPCookieStore.cs to match WebKit reality.
NSHTTPCookie value type stays in Foundation/.
I4. T9 Step 1.5 added documenting the BlockLiteral + [UnmanagedCallersOnly]
+ GCHandle trampoline pattern used to bridge Apple async APIs to
managed Task<T>. References existing
MacOSWebViewAdapter.PInvoke.cs cookie trampolines as canonical.
T8 unchanged. T9 numbering preserved (Step 1.5 inserted between 1 and 2).
T10 numbering preserved (Step 0 prepended).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
TransitionGateDiagnosticEntry, emit singleGovernanceFailure-based failures array, validate transition-gate parity against Ci transitive closure, simplify Ci direct dependenciescommitShaandworkflowRunIdverification in release manifest checksCiMatrixtarget for lightweight cross-platform validation; unify NuGet cache key topackages.lock.jsonhash across all workflowsruntime-architecture-decomposition→configuration-interface-error-modernization); sync all OpenSpec artifacts with implementation stateTest plan
openspec validate --all --strictpassesdotnet test)./build.sh --target CiMatrix --configuration Releasesucceeds locallyMade with Cursor